﻿using Credinka.Ayni.SEA.EN;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace Credinka.Ayni.SEA.AD
{
    public class adAlerta : adGeneral
    {
        public adAlerta(SqlConnection con)
        {
            conexionGeneral = con;
        }

        public List<enAlerta> fListar(enAlerta poenAlerta)
        {
            List<enAlerta> loenAlerta = null;
            SqlCommand cmd = new SqlCommand("sGEN_ListarAlerta", conexionGeneral);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piNumeroPagina", SqlDbType.Int).Value = poenAlerta.NumeroPagina;
            cmd.Parameters.Add("@piNumeroRegistros", SqlDbType.Int).Value = poenAlerta.NumeroRegistros;
            cmd.Parameters.Add("@pvNombre", SqlDbType.VarChar).Value = poenAlerta.Nombre;
            cmd.Parameters.Add("@pvDescripcion", SqlDbType.VarChar).Value = poenAlerta.Descripcion;
            cmd.Parameters.Add("@piCodigoEstado", SqlDbType.Int).Value = poenAlerta.CodigoEstado;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdMenu = drd.GetOrdinal("iIdAlerta");
                int pos_CodigoTipo = drd.GetOrdinal("iCodigoTipoAlerta");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_Descripcion = drd.GetOrdinal("vDescripcion");
                int pos_Estado = drd.GetOrdinal("Estado");
                loenAlerta = new List<enAlerta>();
                enAlerta oenAlerta;
                while (drd.Read())
                {
                    oenAlerta = new enAlerta();
                    oenAlerta.IdAlerta = drd.GetInt32(pos_IdMenu);
                    oenAlerta.CodigoTipoAlerta = drd.GetInt32(pos_CodigoTipo);
                    oenAlerta.Nombre = (drd.IsDBNull(pos_Nombre) ? "" : drd.GetString(pos_Nombre));
                    oenAlerta.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    oenAlerta.Estado = (drd.IsDBNull(pos_Estado) ? "" : drd.GetString(pos_Estado));
                    loenAlerta.Add(oenAlerta);
                }
            }
            return (loenAlerta);
        }

        public int fRegistrar(enAlerta poenAlerta)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sGEN_RegistrarAlerta", conexionGeneral);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pvNombre", SqlDbType.VarChar).Value = poenAlerta.Nombre;
            cmd.Parameters.Add("@pvDescripcion", SqlDbType.VarChar).Value = poenAlerta.Descripcion;
            cmd.Parameters.Add("@pvAsunto", SqlDbType.VarChar).Value = poenAlerta.Asunto;
            cmd.Parameters.Add("@pvMensaje", SqlDbType.VarChar).Value = poenAlerta.Mensaje;
            cmd.Parameters.Add("@piCodigoTipoAlerta", SqlDbType.Int).Value = poenAlerta.CodigoTipoAlerta;
            cmd.Parameters.Add("@pCodigoEstado", SqlDbType.Int).Value = poenAlerta.CodigoEstado;
            cmd.Parameters.Add("@pivAudNombreUsuarioCreacion", SqlDbType.VarChar).Value = poenAlerta.AudNombreUsuarioCreacion;
            cmd.Parameters.Add("@pivAudIPCreacion", SqlDbType.VarChar).Value = poenAlerta.AudIPCreacion;
            cmd.Parameters.Add("@pivAudMacCreacion", SqlDbType.VarChar).Value = poenAlerta.AudMacCreacion;
            N = Convert.ToInt32(cmd.ExecuteScalar());
            return N;
        }

        public bool fModificar(enAlerta poenAlerta)
        {
            bool opcion = false;
            SqlCommand cmd = new SqlCommand("sGEN_ModificarAlerta", conexionGeneral);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pIdAlerta", SqlDbType.Int).Value = poenAlerta.IdAlerta;
            cmd.Parameters.Add("@pvNombre", SqlDbType.VarChar).Value = poenAlerta.Nombre;
            cmd.Parameters.Add("@pvDescripcion", SqlDbType.VarChar).Value = poenAlerta.Descripcion;
            cmd.Parameters.Add("@pvAsunto", SqlDbType.VarChar).Value = poenAlerta.Asunto;
            cmd.Parameters.Add("@pvMensaje", SqlDbType.VarChar).Value = poenAlerta.Mensaje;
            cmd.Parameters.Add("@pCodigoEstado", SqlDbType.Int).Value = poenAlerta.CodigoEstado;
            cmd.Parameters.Add("@pCodigoTipoAlerta", SqlDbType.Int).Value = poenAlerta.CodigoTipoAlerta;
            cmd.Parameters.Add("@pvAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenAlerta.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.VarChar).Value = poenAlerta.AudIPModificacion;
            cmd.Parameters.Add("@pivAudMacModificacion", SqlDbType.VarChar).Value = poenAlerta.AudMacModificacion;
            cmd.ExecuteNonQuery();
            opcion = true;
            return opcion;
        }

        public enAlerta fObtener(enAlerta poenAlerta) {
          enAlerta oenAlerta = new enAlerta();
          oenAlerta.lstAlertaGrupo = new List<enAlertaGrupo>();

          SqlCommand cmd = new SqlCommand("sGEN_ObtenerAlerta", conexionGeneral);
          cmd.CommandType = CommandType.StoredProcedure;
          cmd.Parameters.Add("@pidAlerta", SqlDbType.Int).Value = poenAlerta.IdAlerta;
          SqlDataReader drd = cmd.ExecuteReader();
          if (drd != null) {
            int pos_IdAlerta = drd.GetOrdinal("iIdAlerta");
            int pos_Nombre = drd.GetOrdinal("vNombre");
            int pos_Descripcion = drd.GetOrdinal("vDescripcion");
            int pos_Asunto = drd.GetOrdinal("vAsunto");
            int pos_Mensaje = drd.GetOrdinal("vMensaje");
            int pos_CodigoEstado= drd.GetOrdinal("iCodigoEstado");
            int pos_CodigoTipoAlerta = drd.GetOrdinal("iCodigoTipoAlerta");
            int pos_IdGrupo = drd.GetOrdinal("iIdGrupo");
            int pos_NombreGrupo = drd.GetOrdinal("NombreGrupo");

            while (drd.Read()) {

              enAlertaGrupo oenAlertaGrupo = new enAlertaGrupo();
              oenAlerta.IdAlerta = (drd.IsDBNull(pos_IdAlerta) ? 0 : drd.GetInt32(pos_IdAlerta));
              oenAlerta.Nombre = (drd.IsDBNull(pos_Nombre) ? "" : drd.GetString(pos_Nombre));
              oenAlerta.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
              oenAlerta.CodigoEstado = (drd.IsDBNull(pos_CodigoEstado) ? 0 : drd.GetInt32(pos_CodigoEstado));
              oenAlerta.Asunto = (drd.IsDBNull(pos_Asunto) ? "" : drd.GetString(pos_Asunto));
              oenAlerta.Mensaje = (drd.IsDBNull(pos_Mensaje) ? "" : drd.GetString(pos_Mensaje));
              oenAlerta.CodigoTipoAlerta = (drd.IsDBNull(pos_CodigoTipoAlerta) ? 0 : drd.GetInt32(pos_CodigoTipoAlerta));
              oenAlertaGrupo.IdGrupo = (drd.IsDBNull(pos_IdGrupo) ? 0 : drd.GetInt32(pos_IdGrupo));
              oenAlertaGrupo.NombreGrupo = (drd.IsDBNull(pos_NombreGrupo) ? "" : drd.GetString(pos_NombreGrupo));
              oenAlerta.lstAlertaGrupo.Add(oenAlertaGrupo);
            }
          }
          return (oenAlerta);
        }

    }
}
